1. Field
Embodiments of the invention relate to the field of networking; and more specifically, to the service chaining in the field of networking.
2. Background Information
A provider edge network may apply advanced subscription based services to packets through service path based chaining of the different advanced subscription based services. By way of example, an uplink packet from a subscriber may be forwarded to a subscriber terminating entity. The subscriber terminating entity may access per-subscriber service characterization information in order to determine an uplink service path that is appropriate for the uplink packet. The uplink service path may identify both services that are to be applied to the uplink packet, and an order in which the different services are to be applied to the uplink packet. The subscriber terminating entity may add an uplink service path identifier (ID) to the uplink packet, and then forward the uplink packet to the first service engine along the uplink service path. The first service engine may perform its associated service on the uplink packet. The first service engine may then use the uplink service path ID to identify the next service engine along the path where the uplink packet is to be forwarded. Similarly, other service engines along the uplink service path may forward the uplink packet according to the uplink service path ID.
However, one challenge with service path based chaining approaches is that determination of downlink service paths for downlink packets (e.g., transmitted from a provider end station toward a subscriber end station) tends to be more difficult to implement than determination of uplink service paths. When a downlink packet is received at a line card, typically the line card is not provisioned with per-subscriber service policy information, since this would generally tend to be scale-wise prohibitive. In one possible approach the line card may simply forward the packet to the subscriber terminating entity to allow the subscriber terminating entity to determine the appropriate downlink service path. One potential drawback is that this may result in the subscriber terminating entity needing to process the downlink packet twice, once at the beginning of the downlink service path (e.g., in order to determine the downlink service path), and again at the end of the downlink service path (e.g., to forward the downlink packets to an external element through the line cards). When the amount of packet traffic is high, this may tend to significantly limit the performance of the subscriber terminating entity.
In some prior approaches, the line card may use an Access Control List (ACL) based approach to determine the downlink service path. However, such ACL based approaches tend to have certain drawbacks. For one thing, with ACL based service chaining, application steering knowledge generally has to be known to the forwarding controller. For example, in ACL based approaches, the downlink service path is generally determined based primarily on the source port of the downlink packet identifying a particular type of service or application. For example, a source port of 80/8080 may identify HTTP, a source port of 443 may identify HTTPS, a source port of 20 may identify FTP, a source port of 25 may identify SMTP (e.g., email), and a source port of 3724 may identify gaming applications. The downlink service path determination is highly application dependent, which tends to limit the applicability of the ACL based approaches. Also such ACL based service chaining approaches are generally limited to service paths involving no more than generally about two different services. Furthermore, the ACL rules are generally statically programmed or configured on the line cards, rather than being dynamically adapted or learned during runtime. This tends to make changing or adding rules more difficult. Additionally, provisioning all of the line cards with the ACL rules may be scale-wise prohibitive when the number of subscribers is high.
Accordingly, new approaches for determining downlink service paths would be useful and would offer certain advantages.